<?php

namespace Mouta\SeowebBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\SecurityContext;
use Mouta\SeowebBundle\Entity\Usuario;
use Mouta\SeowebBundle\Entity\Pagina;
use Mouta\SeowebBundle\Entity\Categoria;
use Mouta\SeowebBundle\Entity\Asignacion;
use Mouta\SeowebBundle\Entity\Servicio;
use Mouta\SeowebBundle\Entity\Click;
use Mouta\SeowebBundle\Form\UsuarioType;
use Mouta\SeowebBundle\Form\ContactoType;
use Mouta\SeowebBundle\Form\DatosUserType;
use Mouta\SeowebBundle\Form\SitioType;
use Mouta\SeowebBundle\Form\SitiomodType;
use Mouta\SeowebBundle\Form\CreditoType;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;

class UsuarioController extends Controller
{
    public function loginAction()
    {
        $peticion = $this->getRequest();
        $sesion = $peticion->getSession();

        $error = $peticion->attributes->get(
            SecurityContext::AUTHENTICATION_ERROR,
            $sesion->get(SecurityContext::AUTHENTICATION_ERROR)
        );

        return $this->render('SeowebBundle:Usuario:login.html.twig', array(
            'last_username' => $sesion->get(SecurityContext::LAST_USERNAME),
            'error' => $error

        ));
    }
    public function registroAction()
    {
        $peticion = $this->getRequest();

        $usuario = new Usuario();
        $formulario = $this->createForm(new UsuarioType(), $usuario);




        if ($peticion->getMethod() == 'POST')
        {

            $formulario->bindRequest($peticion);

            if($formulario->isValid())
            {
                $em = $this->getDoctrine()->getEntityManager();
                $em->persist($usuario);
                $em->flush();

                $this->get('session')->setFlash('info',
                    'Te has registrado correctamente'
                );

                $token = new UsernamePasswordToken(
                    $usuario, $usuario->getPassword(), 'usuarios', $usuario->getRoles());
                $this->container->get('security.context')->setToken($token);

                return $this->redirect($this->generateUrl('home'));


            }
        }

        return $this->render(
            'SeowebBundle:Usuario:registro.html.twig',
            array('formulario' => $formulario->createView())
        );


    }

    public function editar_datosAction()
    {
        $peticion = $this->getRequest();


        $formulario = $this->createForm(new DatosUserType());
//        $formulario->remove('nombre');

        if ($peticion->getMethod() == 'POST')
        {

            $formulario->bindRequest($peticion);

            if($formulario->isValid())
            {

                $usuario = $this->get('security.context')->getToken()->getUser();
                $id = $usuario->getId();

                $data = $formulario->getData();
                $nombre = $data["nombre"];
                $apellido = $data["apellido"];
                $fecha = $data["fecha_de_nacimiento"];

                $em = $this->getDoctrine()->getEntityManager();
                $usuario = $em->getRepository('SeowebBundle:Usuario')->find($id);

                $usuario->setNombre($nombre);
                $usuario->setApellido($apellido);
                $usuario->setFechaNacimiento($fecha);

                $em->persist($usuario);
                $em->flush();


                $this->get('session')->setFlash('info',
                    'Los datos se han modificado correctamente'
                );



                return $this->redirect($this->generateUrl('login'));


            }
        }

        return $this->render(
            'SeowebBundle:Usuario:editar_datos.html.twig',
            array('formulario' => $formulario->createView())
        );

    }

    public function contactoAction()
    {
        $peticion = $this->getRequest();
        $formularioc = $this->createForm(new ContactoType());

        if ($peticion->getMethod() == 'POST')
        {
            $formularioc->bindRequest($peticion);

            if($formularioc->isValid())
            {
                $data = $formularioc->getData();

                $asunto = $data["asunto"];
                $email = $data["email"];
                $mensaje = $data["mensaje"];



                $messaje = \Swift_Message::newInstance()
                    ->setSubject($asunto)
                    ->setFrom($email)
                    ->setTo('diegomatias1992@hotmail.com')
                    ->setBody($mensaje)
                ;
                $this->get('mailer')->send($messaje);


                $this->get('session')->setFlash('info',
                    'Mensaje enviado'
                );

                return $this->render('SeowebBundle:Usuario:index.html.twig');

            }


        }

        return $this->render(
            'SeowebBundle:Usuario:contacto.html.twig',
            array('formularioc'=> $formularioc->createView())

        );

    }

}